package com.ziyucoding.springboot.labs.redislike.service;

import com.ziyucoding.springboot.labs.redislike.dto.UserLikeCountDTO;
import com.ziyucoding.springboot.labs.redislike.dto.UserLikesDTO;

import java.util.List;

/**
 * Redis 点赞服务 接口
 * 负责将数据写入Redis缓存
 *
 * @author ziyucoding
 * @date 2023-02-07
 **/
public interface RedisLikeService {

    /**
     * 获取点赞状态
     *
     * @param infoId
     * @param likeUserId
     * @return Integer
     */
    Integer getLikeStatus(String infoId, String likeUserId);

    /**
     * 点赞
     *
     * @param infoId
     * @param likeUserId
     * @return void
     */
    void saveLiked2Redis(String infoId, String likeUserId);

    /**
     * 取消点赞
     *
     * @param infoId
     * @param likeUserId
     * @return void
     */
    void unlikeFromRedis(String infoId, String likeUserId);

    /**
     * 从Redis中删除一条点赞数据
     *
     * @param infoId
     * @param likeUserId
     * @return void
     */
    void deleteLikedFromRedis(String infoId, String likeUserId);

    /**
     * 该内容的点赞数变化Δdelta
     *
     * @param infoId
     * @param delta
     * @return void
     */
    void inDecrementLikedCount(String infoId, Integer delta);

    /**
     * 获取Redis中存储的所有点赞数据
     *
     * @return List<UserLikesDTO>
     */
    List<UserLikesDTO> getLikedDataFromRedis();

    /**
     * 获取Redis中存储的所有点赞数量
     *
     * @return List<UserLikeCountDTO>
     */
    List<UserLikeCountDTO> getLikedCountFromRedis();
}
